home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
newsgroups
/
misc.20020314-20021006
/
000061_fdc@columbia.edu_Sun Apr 28 13:59:50 EDT 2002.msg
< prev
next >
Wrap
Text File
|
2002-10-06
|
9KB
|
201 lines
Article: 13352 of comp.protocols.kermit.misc
Path: newsmaster.cc.columbia.edu!news.columbia.edu!news-not-for-mail
From: fdc@columbia.edu (Frank da Cruz)
Newsgroups: comp.protocols.kermit.misc
Subject: Re: a bug on GNU/linux: speed reset to unintended value occasionally.
Date: 28 Apr 2002 13:59:13 -0400
Organization: Columbia University
Lines: 184
Message-ID: <aahd9h$qii$1@watsol.cc.columbia.edu>
References: <3CAFF81C.8039CBF8@yk.rim.or.jp> <3CCA03A1.59EF10C9@yk.rim.or.jp> <aaedmj$oo5$1@watsol.cc.columbia.edu> <3CCB4F33.4F2B2C62@yk.rim.or.jp>
NNTP-Posting-Host: watsol.cc.columbia.edu
X-Trace: newsmaster.cc.columbia.edu 1020016755 18069 128.59.39.139 (28 Apr 2002 17:59:15 GMT)
X-Complaints-To: postmaster@columbia.edu
NNTP-Posting-Date: 28 Apr 2002 17:59:15 GMT
Xref: newsmaster.cc.columbia.edu comp.protocols.kermit.misc:13352
In article <3CCB4F33.4F2B2C62@yk.rim.or.jp>,
: ...
: Pseudo random generation for testing purposes.
: You know I am impressed with the KERMIT, the software, more as I learn
: more about it (after reading first about it in BYTE in the early
: 1980's.)
:
In English or Japanese? (Was there a Japanese edition of BYTE?)
: Maybe you should promote the study of source code of KERMIT among
: software engineering courses at colleges, etc..
:
Kermit has been, and maybe still is, taught in some university
telecommunications and software engineering courses. One of the main
uses for the original Kermit book was as a textbook. If we knew how to
promote Kermit any better than we do already, we would do it :-) The
C-Kermit CDROM page:
http://www.columbia.edu/kermit/ck70cd.html
suggests that the enormous source-code base might be a useful object of
study. At least one other programming textbook was written, using Kermit
source code as a base:
Kelly-Bootle, Stan,
"680x0 Programming By Example",
Howard W Sams & Co, Indianapolis IN (1988),
ISBN 0-672-22544-1.
In this case it was the Alpha Micro version written by Rob Rubendunst:
ftp://kermit.columbia.edu/kermit/c/am*.*
Of course other books have featured Kermit protocol and/or code too,
including:
Kientzle, Tim,
"The Working Programmer's Guide to Serial Protocols",
Coriolis Group Books, Scottsdale AZ (1995),
ISBN 1-883577-20-9
Quarterman, John,
"The Matrix: Computer Networks and Conferencing Systems Worldwide",
Digital Press, Bedford MA (1990),
ISBN 1-55558-033-5
McNamara, John,
"Technical Aspects of Data Communication", Third Edition,
Digital Press, Bedford MA (1988),
ISBN 1-55558-007-6
Campbell, Joe,
"C Programmer's Guide to Serial Communications",
Howard W Sams & Co, Indianapolis IN (1987),
ISBN 0-672-22584-0
Gofton, Peter W.
"Mastering Serial Communications",
SYBEX, Berkeley CA (1986),
ISBN 0-89588-180-2
And somewhat more sensationally:
Stoll, Clifford:
"The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage",
Doubleday, New York (1989),
ISBN 0-385-24946-2
Most of the books listed above speak of Kermit as a "serial protocol",
i.e. to be used only with serial ports and modems. In fact, Kermit is a
well-structured layered protocol that can be used over any medium or
connection type (e.g. Telnet, SSH).
In particular, it is perfect for use over UDP, and you might see some
interesting applications for this arising in the future.
: I am saying this because LINUX is all the rage as open source software
: and it is quite interesting to see the different coding styles adopted
: for portability. Linux uses different directories to support
: different architecture...
:
There are many approaches to portability, none of them perfect. There are
also different definitions of portability. These days many people think
portability means that the same code can be built for Linux and maybe one
or two other Unix varieties, using GNU tools (autoconfig, etc).
Although there was a Kermit program for Unix as early as 1982, C-Kermit
did not appear until 1985. I decided to start over, with a modular design
and portability as a top priority: C-Kermit would consist of a totally
portable Kermit protocol core, a "C-Library" portable user interface (but
one that could be replaced with any other kind of user interface, e.g. GUI
as on the Macintosh, which was actually done), and platform-dependent
modules for input/output (file i/o, communications i/o, and CONNECT
(terminal) mode).
As the years went by, we ported C-Kermit to 12 distinct operating system
families: Unix, VMS, AOS/VS, VOS, OS-9, Apollo Aegis, the Atari ST, the
Commodore Amiga, the Macintosh, Plan 9 from Bell Labs, Microsoft Windows,
and IBM OS/2.
The platform-specific modules for most of these platforms -- VMS, AOS/VS,
OS-9, VOS, Mac -- fit the model quite well, and contain very few #ifdefs.
The Unix modules, on the other hand, are amazing to behold because the
differences among Unix variations (Linux, BSD, AIX, Solaris, SCO, etc) and
the releases of each one (AIX 2.1, AIX 3.2.5, AIX 4.1, AIX 4.3, AIX 5.1)
are far greater than we ever foresaw in 1985 -- in those days, Unix was
known as a portable operating system, and in fact there were only two
main branches: BSD and System V.
But the i/o modules are quite large. This presents a dilemma: should we
create separate i/o modules for AIX, Solaris, HP-UX, IRIX, SCO, and so on?
If so, there would be tens of thousands of lines of duplicated code that
would have to be changed in many places if a bug needed to be fixed or the
API updated. Or do we keep all the shared code in one place and handle
the product-specific differences with #ifdefs?
: ... because Linux Torvalds decided at the early stage to do away with
: "#ifdef/#else/#endif#" as a means of supporting different CPU
: architecture. But KERMIT uses "#if/#else" heavily in order to support
: different platforms.
:
Linus had one operating system and one compiler to consider: that's a
much smaller problem space.
: Surely the difference has to do with the sheer
: number of source files and the distributed nature of developers.
:
We chose #ifdefs for the reasons explained here:
http://www.columbia.edu/kermit/ckcplm.html#x3
: For a beginning programmers who would grow to be a professional
: programmer (or for that matter, who would not be a professional
: programmer)
: to learn the different styles and the analyzing the rational of such
: styles would be very instrumental. Programming in the small and
: programming in the large is very different and seeing
: large live code such as KERMIT in action is a good thing IMHO.
:
I think so too, but most people don't care any more now that, for most
developers, only Windows and Linux exist. Nevertheless, there are still
a few other projects besides Kermit that try to be portable to as many
platforms as possible, both old and new, such as:
http://www.info-zip.org/pub/infozip/
: Free Software Foundation of GNU fame used to mention
: in its documentation about calling for volunteers and
: college teachers who may use GNU software as a course material to
: train students (and at the same time to debug and improve the code).
: KERMIT probably is a very good source material for an advanced
: programming course today.
:
I agree. In a software engineering course with a laboratory, it can
certainly fit into a semester's project, perhaps along with other
projects. Its behavior can be studied -- performance, error recovery,
and so on. Also, since the protocol is extensible, it can form the basis
for more ambitious projects -- for example, a network layer can be added
for routing (I know of a case where this was done quite successfully).
I have a few other ideas for software engineering projects too.
: ... and today now the inclusion of Kerberos and
: scp/ssh functionalities would be very
: instructive for secure Internet programming.
:
We like to think so, and if we did not have to focus constantly on raising
money to pay for the continued existence of the Kermit Project, we would
spend more time writing books and papers on topics like this (and for that
matter we would even spend more time writing software :-) Unfortunately
there is no other support for the kind of work we do, especially not in
these hard economic times.
: PS: BTW, I am not sure if this is the right place, but my sympathies to
: those whose life were affected by the event in last September over
: there. The other day I saw the picture on the web page of KERMIT and
: thought about it for a moment, and noticed the small letters next to the
: photo.
:
Thanks for the kind thoughts. A few people suggested we remove the images
of the World Trade Center, but most people are supportive of keeping them.
- Frank